Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Text to Binary e Viceversa [C#]
Forum - C# / VB.NET - [C#] Text to Binary e Viceversa [C#]

Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 1:03
Venerdì, 29/07/2011
Ragazzi stavo creando un programma per convertire una stringa di testo in una stringa binaria... da Text a Binary tutto bene quando però vado a riconvertire c'è un piccolo problema la stringa di testo originale non è quella... mi spiego meglio..

Ecco il codice

Codice sorgente - presumibilmente C# / VB.NET

  1. byte[] byte1 = Encoding.UTF8.GetBytes(textBox2.Text);
  2.             string testo = Convert.ToBase64String(byte1);
  3.             textBox1.Text = testo;



Facendo così se converto "Ciao" mi da "01000011011010010110000101101111" se riconverto il codice binario mi da "MDEwMDAwMTEwMTEwMTAwMTAxMTAwMDAxMDExMDExMTE="

Alternativamente Usando Encoding.UTF8.GetString mi ridà la stessa stringa in binario...
Codice sorgente - presumibilmente C# / VB.NET

  1. byte[] byte1 = Encoding.UTF8.GetBytes(textBox2.Text);
  2.             string testo = Encoding.UTF8.GetString(byte1);
  3.             textBox1.Text = testo;



Aiutatemi voi per favore...

Ultima modifica effettuata da DexterELEL il 29/07/2011 alle 10:34
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 10:15
Venerdì, 29/07/2011
C'è di mezzo quel  Convert.ToBase64String(byte1); che non si sa cosa debba fare o dove debba stare. L'hai richiamato passandogli byte1, che dichiari solo nel secondo pezzo di codice, quindi devo presumere che l'ordine degli snippet sia invertito.
Inoltre questo:
Codice sorgente - presumibilmente C# / VB.NET

  1. byte[] byte1 = Encoding.UTF8.GetBytes(textBox2.Text);             string testo = Encoding.UTF8.GetString(byte1);


Non ha senso. Infatti passi da textBox2.Text a byte[] e da byte[] a String, ossia ottieni ancora textBox2.Text.

Scusami avevo sbagliato a scrivere veramente, byte1 è dichiarata anche nella prima parte, comunque avete qualche suggerimente su come risolvere? - DexterELEL - 29/07/11 10:47
PM
Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 16:30
Venerdì, 29/07/2011
Scusa forse non ho ben capito. Encoding.UTF8.GetString() restituisce la stringa originale, quindi qual'è il problema?

Edit riferito al mio commento:
Codice sorgente - presumibilmente C# / VB.NET

  1. byte[] byte1 = Encoding.UTF8.GetBytes("Una stringa a caso...");
  2. string testo = Encoding.UTF8.GetString(byte1);
  3.  
  4. Console.WriteLine(testo);    // Una stringa a caso...



EDIT2:
Codice sorgente - presumibilmente C#

  1. string binaryString = "10";    // ovviamente "10" equivale a "00000010"
  2. int number = Convert.ToInt32(binaryString, 2);   // number = 2
  3.  
  4. int number2 = 2;
  5. string binaryString2 = Convert.ToString(number, 2);      // binaryString2 = "10"



Qui una semplice funzione per far si che tutte le stringhe binarie abbiamo 8 bit. Chiaramente per numeri maggiori di 255 va modificata...
Codice sorgente - presumibilmente C#

  1. string EightBits(string binaryString)
  2. {
  3.      if (binaryString.Length != 8)            
  4.           return new string('0', 8 - binaryString.Length) + binaryString;
  5.      else
  6.           return binaryString;
  7. }


Ultima modifica effettuata da Phil93 il 01/08/2011 alle 19:54
Non restituisce la stringa originale è questo il problema... - DexterELEL - 29/07/11 17:41
A me la restituisce correttamente... - Phil93 - 29/07/11 19:06
Si sulla console funge bene ma sul form usando le TextBox no... - DexterELEL - 30/07/11 00:59
Scusa ho risolto grazie a tutti :D avevo fatto un'errore stupidissimo.. - DexterELEL - 30/07/11 01:01
Un'altra cosa e se volessi convertire delle stringhe X di numeri binari??? dovrei fare una cosa del genre vero? byte[] binary = new byte[Convert.ToInt64(textBox1.Text)]; e poi usare il getString ma dice che è un valore troppo grande o troppo piccolo per Int64.... - DexterELEL - 30/07/11 01:25
Intendi ad esempio convertire "00000010" in 2 ecc.? - Phil93 - 31/07/11 17:58
sisi proprio quello - DexterELEL - 01/08/11 13:05
Ho editato - Phil93 - 01/08/11 19:54
Grazie ma io intendevo convertire stringhe tipo "01000011011010010110000101101111" in Ciao... - DexterELEL - 02/08/11 01:19
Beh ma quella stringa così com'è è solo un numero binario molto grande, ed è unico. Quello che devi fare è splittare la stringa in varie stringhe da 8 bit ciascuna, convertirle in numero in base dieci come ti ho spiegato e usare il metodo Convert.ToChar(numero) per ottenere il carattere. - Phil93 - 03/08/11 00:41
PM